package in.lib.holder;
import in.lib.adapter.PrivateMessageAdapter;
import in.lib.annotation.InjectView;
import in.lib.manager.SettingsManager;
import in.lib.utils.Dimension;
import in.lib.utils.URLUtils;
import in.lib.utils.Views;
import in.lib.view.LinkTouchMovementMethod;
import in.model.PrivateMessage;
import in.obj.annotation.Annotation.Type;
import in.obj.annotation.LocationAnnotation;
import in.rob.client.MainApplication;
import in.rob.client.R;
import lombok.ToString;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.ImageView;
import android.widget.ProgressBar;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.assist.SimpleImageLoadingListener;
@ToString(callSuper = true)
public class CenterPrivateMessageHolder extends PrivateMessageHolder
{
@InjectView(R.id.location_container) public View locationContainer;
@InjectView(R.id.location_image) public ImageView locationImage;
@InjectView(R.id.location_progress) public ProgressBar locationProgress;
@InjectView(R.id.replies_container) public View repliesContainer;
@InjectView(R.id.reply_to_container) public View replyToContainer;
@InjectView(R.id.user_container) public View userContainer;
public CenterPrivateMessageHolder(View convertView)
{
super(convertView);
Views.inject(this, convertView);
}
/**
* Method to use when populating a view's members with the
* data from post.
* @param inflater The inflater to use when creating new views
* @param holder The holder containing the views
* @param post The post object
*/
@Override public void populate(PrivateMessage message, PrivateMessageAdapter adapter)
{
super.populate(message, adapter);
repliesContainer.setVisibility(View.GONE);
replyToContainer.setVisibility(View.GONE);
locationContainer.setVisibility(View.GONE);
optionsContainer.setVisibility(View.VISIBLE);
deleteButton.setVisibility(View.GONE);
text.setLinkMovementMethod(new LinkTouchMovementMethod());
if (adapter.indexOf(message) < adapter.getCount() - 1)
{
repliesContainer.setVisibility(View.VISIBLE);
}
if (adapter.indexOf(message) > 0)
{
replyToContainer.setVisibility(View.VISIBLE);
}
if (message.getPoster().isYou())
{
deleteButton.setVisibility(View.VISIBLE);
}
boolean block = !SettingsManager.isInlineImageWifiEnabled() || (SettingsManager.isInlineImageWifiEnabled() && MainApplication.isOnWifi());
block &= message.getAnnotations() != null;
if (block)
{
if (message.getAnnotations().get(Type.LOCATION) != null && message.getAnnotations().get(Type.LOCATION).size() > 0)
{
LocationAnnotation location = (LocationAnnotation)message.getAnnotations().get(Type.LOCATION).get(0);
Dimension d = new Dimension(locationImage.getContext());
String mapImage = URLUtils.getMapThumbnail(location.getLat(), location.getLng(), d.getScreenWidth(), d.densityPixel(100));
ImageLoader.getInstance().displayImage(mapImage, locationImage, MainApplication.getCenterPostMediaOptions(), new SimpleImageLoadingListener()
{
@Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage)
{
locationProgress.setVisibility(View.GONE);
}
@Override public void onLoadingStarted(String imageUri, View view)
{
locationProgress.setVisibility(View.VISIBLE);
}
});
locationContainer.setVisibility(View.VISIBLE);
locationImage.setTag(R.id.TAG_ENTITY, location);
}
}
}
}